home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (3rd Edition) / The Business Master (3rd Edition).iso / files / datature / omahadb / print.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1988-11-05  |  19.4 KB  |  391 lines

  1. 100  FOR X=1 TO 300:NEXT
  2. 120  A$=INKEY$: IF A$="O" OR A$="o" THEN 130 ELSE 210
  3. 130  CLS: LOCATE 10,1: PRINT "PLEASE TYPE IN NEW PRINTER CODE FOR COMPRESSION. IF YOU HAVE AN I.B.M. OR       EPSON PRINTER, THE CODE IS 'CTRL-O' SO JUST TYPE THAT AND THEN PRESS THE        'ENTER' KEY."
  4. 140  CMP$="":PRINT "NEW CODE FOR COMPRESSED PRINT ======> ";
  5. 150  X$=INKEY$: IF X$="" THEN 150 ELSE IF X$=CHR$(13) THEN 170
  6. 160  CMP$=CMP$+X$:BEEP:GOTO 150
  7. 170  CLS: LOCATE 10,1: PRINT "PLEASE TYPE IN NEW PRINTER CODE FOR ADVANCE TO NEXT PAGE.  GENERALLY THIS CODE  IS 'CTRL-L'.
  8. 180  NPG$="":PRINT "NEW CODE FOR NEXT PAGE =============> ";
  9. 190  X$=INKEY$: IF X$="" THEN 190 ELSE IF X$=CHR$(13) THEN 1000
  10. 200  NPG$=NPG$+X$:BEEP:GOTO 190
  11. 210  CMP$=CHR$(15):REM printer command for compression
  12. 215  DEF FN RN(X)=CVI(L$)
  13. 220  NPG$=CHR$(12):REM printer command for next page
  14. 230  PL=58: REM PAGE LENGTH
  15. 1000  REM ******* PRINT PROGRAM *******
  16. 1010  D$=CHR$(0)+"*":ZER$=MKI$(0)+MKI$(0)+MKI$(0)+MKI$(0)+MKI$(0)
  17. 1020  'ON ERROR GOTO 30000
  18. 1021  OPEN "DD" FOR INPUT AS 1: INPUT #1,DR$:CLOSE
  19. 1030  DIM U%(22):FOR I=0 TO 21:READ U%(I):NEXT:DATA&H8B55,&HB8EC,&H0600,&H07B7,&H768B,&H8A0C,&H8B2C,&HA76,&HC8A,&H768B,&H8A08,&H8B34,&H676,&H148A,&HCDFE,&HC9FE,&HCEFE,&HCAFE,&H10CD,&HCA5D,&H8,&H0
  20. 1050  F1=0:F2=1:F3=2: REM DEFAULT DATA ENTRY PARAMETERS
  21. 1060  DEF FNPN(S)=CVI(MID$(P$(0),S*2-1,2))
  22. 1070  DEF FNMFP(F)=CVI(MID$(P$(F),1,2))
  23. 1080  DEF FNNP(F)=CVI(MID$(P$(F),3,2))
  24. 1090  DEF FNL(Y)=7+(Y MOD 10)+(-10*(Y MOD 10 = 0))
  25. 1100  MF$="###################,.##"
  26. 1110  IF CHR$(SCREEN(2,27))<>"T" THEN CLS:COLOR 0,7:PRINT SPACE$(240):LOCATE 2,27:PRINT "The Omaha DataBase Program":LOCATE 1,1:PRINT"KEY";STRING$(78,"THEN");"CLOSE":LOCATE 2,1:PRINT "OPEN":LOCATE 2,80:PRINT "OPEN":LOCATE 3,1:PRINT "SCREEN";STRING$(78,"THEN");"LOAD": COLOR 7,0:
  27. 1120  KEY OFF:FOR G=1 TO 10:KEY G,"":NEXT
  28. 1130  LIN$="F1 "+CHR$(24)+" F2 "+CHR$(25)+" F3 SUB"+CHR$(24)+" F4 SUB"+CHR$(25)+" F5 SUB"+CHR$(26)+" F6 MAS"+CHR$(26)+" F7 ANY# F8 DEL  F9 ORGNAL F10 RETURN"
  29. 1140  LIN2$="F1 "+CHR$(27)+"   F2 "+CHR$(26)+"   F3 "+CHR$(24)+"   F4 "+CHR$(25)+"   F5 "+CHR$(27)+"MAS F6 MAS"+CHR$(26)+" F7 ORDER F8 MORE F9 ANY # F10 RETRN"
  30. 1150  DIM X$(6,70),T$(6,70),BB(6,70),BL(6,70),T(6,70),FA(70),FB(70),FC(70),A$(70): DIM TT(1,70),C(3,10),R(70)
  31. 1160  RESET:GOSUB 1190
  32. 1170  LOCATE 2,3:PRINT TIME$:LOCATE 2,69:PRINT DATE$
  33. 1180  GOSUB 1190: GOSUB 1260:GOTO 3000
  34. 1190  R1%=4:R2%=24:C1%=1:C2%=80:GOTO 1240: REM SCREEN CLEAR
  35. 1200  R1%=4:R2%=19:C1%=1:C2%=80:GOTO 1240: REM SCREEN CLEAR
  36. 1210  R1%=21:R2%=23:C1%=2:C2%=78:GOTO 1240: REM BOX CLEAR
  37. 1220  R1%=8:R2%=19:C1%=2:C2%=78:GOTO 1240:
  38. 1230  R1%=6:R2%=19:C1%=1:C2%=80:GOTO 1240: REM SCREEN CLEAR
  39. 1240  DEF SEG: SUBRT%=VARPTR(U%(0)):CALL SUBRT%(R1%,C1%,R2%,C2%):RETURN
  40. 1250  LOCATE 20,1: PRINT "KEY";STRING$(77,"THEN");"CLOSE":LOCATE 21,1:PRINT "OPEN":LOCATE 21,79:PRINT "OPEN":LOCATE 22,1:PRINT "OPEN":LOCATE 22,79:PRINT "OPEN":LOCATE 23,1:PRINT"OPEN":LOCATE 23,79:PRINT"OPEN";:LOCATE 24,1:PRINT "SCREEN";STRING$(77,"THEN");"LOAD";:RETURN:REM BOX
  41. 1260  REM FORMAT FILE
  42. 1270  F$=DR$+":FORMAT"
  43. 1280  OPEN F$ FOR INPUT AS #7:
  44. 1290  FOR F=0 TO 6:IF EOF(7) THEN 1300 ELSE INPUT #7,F$(F),LL(F),TE(F),DR$(F):FOR Y=1 TO TE(F):INPUT #7,T$(F,Y),T(F,Y),BB(F,Y),BL(F,Y):NEXT:NEXT
  45. 1300  CLOSE:TF=F-1
  46. 1310  RETURN
  47. 1320  PLAY "MB":FOR I9=1 TO 6:FOR J9=2 TO 4:PLAY "L64T200O=J9;DEFGA":NEXT:NEXT:RETURN
  48. 1330  LOCATE 23,3: COLOR 15:PRINT "INCORRECT ENTRY":COLOR 7,0:GOSUB 1320:GOSUB 1320:GOSUB 1210:RETURN
  49. 1340  LOCATE 23,3: COLOR 15:PRINT "TOO HIGH!!":COLOR 7,0:GOSUB 1320:GOSUB 1320:GOSUB 1210:RETURN
  50. 1350  REM OPEN FILE
  51. 1360  FI$(F)=DR$(F)+":"+F$(F):QZ=4:IF F=0 THEN QZ=10:
  52. 1370  OPEN FI$(F) AS #F+1 LEN=LL(F):FIELD #F+1,QZ AS P$(F):FOR Y=1 TO TE(F)
  53. 1380  IF QZ>510 THEN FIELD #F+1,255 AS Q1$,255 AS Q2$,QZ-510 AS Q3$,BL(F,Y) AS X$(F,Y) ELSE IF QZ>255 THEN FIELD #F+1,255 AS Q1$,QZ-255 AS Q2$,BL(F,Y) AS X$(F,Y) ELSE IF QZ=<255 THEN FIELD #F+1,QZ AS Q1$,BL(F,Y) AS X$(F,Y)
  54. 1390  QZ=QZ+BL(F,Y):NEXT
  55. 1400  RETURN
  56. 1410  FI$=DR$+":REC":OPEN FI$ FOR INPUT AS #7
  57. 1420  FOR G=0 TO TF:IF EOF(7) THEN 1440
  58. 1430  INPUT #7,NR(G),DL(G):NEXT:
  59. 1440  CLOSE #7:FOR G=0 TO TF: IF NR(G)=0 THEN NR(G)=1:
  60. 1450  NEXT
  61. 1460  RETURN: CLOSE #7
  62. 3000  REM beginning
  63. 3010  TIMER ON: ON TIMER (1) GOSUB 4660
  64. 3020  GOSUB 1260: REM READ FORMAT FILE
  65. 3030  RESET:GOSUB 1190:LOCATE 25,1:PRINT STRING$(79,32);
  66. 3040  GOSUB 1250:LOCATE 22,3: PRINT "ENTER FORMAT FILE TO USE ====>":LOCATE 4,1:GOSUB 4670
  67. 3050  LOCATE 22,33:INPUT " ",FF$
  68. 3060  IF FF$="" THEN GOSUB 1330
  69. 3070  FF$=LEFT$(FF$,8):FF$=DR$+":"+FF$+".FMT"
  70. 3080  ON ERROR GOTO 3150
  71. 3090  OPEN FF$ FOR INPUT AS 1
  72. 3100  INPUT #1,TITLE$: INPUT #1,PRIMARY: INPUT #1,WI
  73. 3110  FOR X=1 TO 50:IF EOF(1) THEN 3140
  74. 3120  INPUT #1,FA(X),FB(X),FC(X),A$(X)
  75. 3130  NEXT
  76. 3140  TX=X-1:X=50:GOTO 3160
  77. 3150  TX=0:RESUME 3160
  78. 3160  ON ERROR GOTO 0
  79. 3170  IF TX<>0 THEN GOSUB 4760
  80. 3180  IF TX<>0 THEN 3490
  81. 3190  GOSUB 1210:LOCATE 22,3: INPUT "Title to be printed on Report ===> ";TITLE$
  82. 3200  GOSUB 1200:GOSUB 1210:LOCATE 21,3: PRINT "FILES: ";:FOR Y=0 TO TF: PRINT Y". ";F$(Y);:NEXT:PRINT
  83. 3210   LOCATE 22,3: PRINT "WHICH IS THE PRIMARY FILE (0 -";TF;:INPUT ") ==> ",F$
  84. 3220  F=VAL(F$): IF F<0 OR F>TF THEN GOSUB 1330: GOTO 3250
  85. 3230  PRIMARY=F
  86. 3240  GOSUB 1200:FOR X=1 TO 50
  87. 3250  GOSUB 1210:LOCATE 21,3: PRINT "FILES: ";:FOR Y=0 TO TF: PRINT Y". ";F$(Y);:NEXT:PRINT
  88. 3260  LOCATE 22,3: PRINT "ENTER '9' TO END."
  89. 3270  LOCATE 23,3: PRINT X".  FILE (0 -";TF;:INPUT ") FOR REPORT ELEMENT ==> ",N$
  90. 3280  IF N$="9" OR N$="" THEN 3450
  91. 3290  FA(X)=VAL(N$): IF FA(X)<0 OR FA(X)>TF THEN GOSUB 1330: GOTO 3250
  92. 3300  IF FA(X-1)=FA(X) AND X<>1 THEN 3330
  93. 3310  GOSUB 1200:LOCATE 5,1:COLOR 9: PRINT "FIELDS:":COLOR 7,0: FOR Y=1 TO TE(FA(X)): PRINT LEFT$(STR$(Y)+". "+T$(FA(X),Y)+STRING$(20,32),19);" ";
  94. 3320  NEXT Y
  95. 3330  GOSUB 1210:LOCATE 21,3: PRINT "ENTER FIELD OR SPECIAL INSTRUCTIONS # * + ' @ )"
  96. 3340  LOCATE 22,3: PRINT "ENTER FIELD (#,*,+,',@,0 -";TE(FA(X));:INPUT ") ===> ",N$
  97. 3350  IF N$="#" THEN FB(X)=-0.1: WI=WI+6:GOTO 3440
  98. 3360  IF N$="*" THEN FB(X)=-0.2: WI=WI+6:GOTO 3440
  99. 3370  IF N$="@" THEN FB(X)=-0.3: WI=0:GOTO 3440
  100. 3375  IF LEFT$(N$,1)="'" THEN FB(X)=-0.4: WI=WI+LEN(N$)-1:A$(X)=MID$(N$,2):GOTO 3440
  101. 3380  IF LEFT$(N$,1)="+" THEN FB(X)=ABS(VAL(N$))*-1:WI=WI+ABS(VAL(N$)):GOTO 3440
  102. 3390  FB(X)=VAL(N$): IF FB(X)<1 OR FB(X)>TE(FA(X)) THEN GOSUB 1330: GOTO 3330
  103. 3400  WI=WI+BL(FA(X),FB(X))+1: TY=T(FA(X),FB(X)): IF TY<>1 THEN WI=WI+2
  104. 3410  IF FA(X)=0 THEN 3440 ELSE IF FA(X)= PRIMARY THEN 3440 ELSE GOSUB 1210: LOCATE 21,3: PRINT "This element is from a sub-file and may have more than one records": LOCATE 22,3: PRINT "connected to the same master file record."
  105. 3420  LOCATE 23,3: INPUT "(1) USE 1ST LINKED RECORD OR (2) USE ALL LINKED RECS (1-2)==> ",N$
  106. 3430  FC(X)=VAL(N$)-1: IF FC(X)<0 OR FC(X)>1 THEN GOSUB 1330: GOTO 3390
  107. 3440  LOCATE 20,4: PRINT "WIDTH ==> "WI:NEXT
  108. 3450  TX=X-1:X=51:GOSUB 1250:FLAG=1:GOSUB 4760
  109. 3460  REM NOW WRITE FORMAT FILE TO DISK
  110. 3470  OPEN FF$ FOR OUTPUT AS 1
  111. 3480  PRINT #1,TITLE$: PRINT #1,PRIMARY: PRINT #1,WI:FOR X=1 TO TX: PRINT #1,FA(X):PRINT #1,FB(X):PRINT #1,FC(X):PRINT #1,A$(X):NEXT: CLOSE
  112. 3490  REM FORMAT FILE LOADED
  113. 3500  CLOSE:GOSUB 1210: LOCATE 23,3: PRINT "PRESS 'ESC' TO TERMINATE WHILE PRINTING" :LOCATE 21,3: INPUT "REPORT ON (P)RINTER, (S)CREEN, (D)ISK ";DIR$
  114. 3510  DIR=INSTR("psdPSD",DIR$): IF DIR=0 THEN GOSUB 1330:GOTO 3500
  115. 3520  IF DIR>3 THEN DIR=DIR-3
  116. 3530  IF DIR=1 THEN OFN$="LPT1:" ELSE IF DIR=2 THEN OFN$="SCRN:"
  117. 3540  MES$="":MES$="TYPE: (L)ABELS, (R)EPORT": IF DIR=3 THEN MES$=MES$+", (C)LONE"
  118. 3550  LOCATE 22,3: PRINT MES$;:INPUT " ";TYP$
  119. 3560  TYP=INSTR("LRClrc",TYP$):IF TYP=0 THEN 3540 ELSE IF TYP>3 THEN TYP=TYP-3
  120. 3570  RESET:ODR$="":IF DIR<>3 THEN 3640
  121. 3580  IF DIR=3 THEN GOSUB 1210: LOCATE 21,3: INPUT "DISK DRIVE FOR OUTPUT (A-H) ";ODR$
  122. 3590  IF INSTR("ABCDEFGHabcdefgh",ODR$)=0 THEN GOSUB 1330: GOTO 3580
  123. 3600  ODR$=ODR$+":":LOCATE 22,3: INPUT "OUTPUT FILE NAME  'XXXX.OUT'  ",OFN$
  124. 3610  IF OFN$="" THEN GOSUB 1330: GOTO 3600
  125. 3620  OFN$=LEFT$(OFN$,8): IF INSTR(".",OFN$)<>0 THEN OFN$=MID$(OFN$,1,INSTR(".",OFN$)-1)
  126. 3630  OFN$=OFN$+".OUT":
  127. 3640  GOSUB 4760: GOSUB 1210: LOCATE 22,3: INPUT "Which field change to trigger sub-totals  ";A$
  128. 3650  YS=VAL(A$): IF YS>TX THEN BEEP: GOTO 3640: REM YS IS SUBTOTAL ELEMENT
  129. 3660  GOSUB 4760:GOSUB 1210: LOCATE 22,3: INPUT "List (A)ll records or (S)elected records only ";A$
  130. 3670  A$=LEFT$(A$,1):IF A$="S" OR A$="s" THEN GOSUB 5180:GOTO 3690
  131. 3680  IF A$<>"A" AND A$<>"a" THEN GOSUB 1330: GOTO 3660
  132. 3690  GOSUB 1410:IF DIR=3 THEN OPEN ODR$+OFN$ FOR OUTPUT AS 7 ELSE OPEN OFN$ FOR OUTPUT AS 7
  133. 3700  IF DIR=2 THEN TIMER OFF: CLS
  134. 3710  IF DIR=1 THEN GOSUB 1210: LOCATE 21,3: BEEP: PRINT "TURN ON YOUR PRINTER"
  135. 3720  IND$=DR$(PRIMARY)+":"+"F"+MID$(STR$(PRIMARY),2,1)+".INX"
  136. 3725  ON ERROR GOTO 3770
  137. 3730  OPEN IND$ AS #8 LEN=4: FIELD #8,2 AS L$,2 AS H$
  138. 3750  GET #8,1: IF FNRN(1)=0 THEN INDEX=0: GOTO 3780
  139. 3760  INDEX =1:GOTO 3780: REM THERE IS AN INDEX FILE, DO NOT USE PHYSICAL ORDER
  140. 3770  RESUME 3780
  141. 3780  ON ERROR GOTO 0
  142. 3790  FOR F=0 TO TF: GOSUB 1360: NEXT:REM OPEN FILES
  143. 3800  GOSUB 4960: GOSUB 4900
  144. 3810  FOR Y=1 TO TX:FR(FA(Y))=1:NEXT: REM FILES TO BE READ IN
  145. 3820  FOR X=1 TO 99999
  146. 3825  FOR Y=1 TO TX: IF FB(Y)>0 THEN LSET X$(FA(Y),FB(Y))="                     "
  147. 3826  NEXT
  148. 3830  IF INDEX=1 THEN GET #8,X: RN=FNRN(X)  ELSE RN=X
  149. 3840  IF RN=0 THEN 4300
  150. 3850  IF LL MOD 55 = 0 THEN GOSUB 4900
  151. 3860  XM=RN: IF PRIMARY=0 THEN  GET #1,XM ELSE GET #PRIMARY +1,XM: XM=FNMFP(PRIMARY): IF XM=0 THEN 4290 ELSE GET #1,XM
  152. 3870  FOR Y=1 TO TX: IF FR(FA(Y))=1 AND FA(Y)<>PRIMARY AND FA(Y)<>0 THEN NQ=FNPN(FA(Y)): IF NQ<>0 THEN GET #FA(Y)+1,NQ:R(Y)=NQ
  153. 3875  IF FR(FA(Y))=1 AND FA(Y)<>PRIMARY AND FA(Y)=0 THEN NQ= FNMFP(PRIMARY): IF NQ<>0 THEN GET #FA(Y)+1,NQ:R(Y)=NQ
  154. 3880  NEXT: REM NOW ALL FILES READ IN
  155. 3890  IF ASC(LEFT$(X$(PRIMARY,1),1))=0 OR LEFT$(X$(PRIMARY,1),2)="  " THEN GOTO 4260
  156. 3900  IF LEFT$(P$(PRIMARY),2)=D$ THEN 4260: REM DELETED RECORD
  157. 3910  REM CLONE    notice: CLONE DOES NOT CHECK FOR LINKED RECORD IN SUB-FILES
  158. 3920  IF TYP<>3 THEN 4010
  159. 3930  IF SELECT=1 THEN GOSUB 5420: IF TFV=0 THEN 4260
  160. 3935  YM=XM: IF FA(1)<> PRIMARY THEN YM=FN MFP(FA(1))
  161. 3937  PRINT #7,MKI$(YM);MKI$(0);
  162. 3940  FOR Y=1 TO TX:YM=XM:IF FA(Y)<>PRIMARY THEN YM=FN MFP(FA(Y))
  163. 3950  IF FB(Y)=-0.1 THEN PRINT #7,USING "#####";YM;:GOTO 3990
  164. 3960  IF FB(Y)=-0.2 THEN PRINT #7,USING "#####";X;:GOTO 3990
  165. 3962  IF FB(Y)=-0.3 THEN PRINT #7," ":GOTO 3990
  166. 3965  IF FB(Y)=-0.4 THEN PRINT #7,A$(Y);:GOTO 3990
  167. 3970  IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y)),32);: GOTO 3990
  168. 3980  PRINT #7,X$(FA(Y),FB(Y));:
  169. 3990  NEXT Y:GOTO 4260: REM NEXT X
  170. 4000  REM NOW PRINT OUT RECORD XM
  171. 4010  IF SUBTOTAL=1 THEN GOSUB 5070: REM print subtotals
  172. 4015  NNR=0:PTFV=0:IF SELECT=1 THEN GOSUB 5420:NPRINT=0: PTFV=TFV:IF TFV=0 THEN NPRINT=1:GOTO 4030: REM PRIMARY DOES NOT FIT SELECTION CHECK OTHER SUB-FILES BEFORE GOING ON TO NEXT RECORD   ... PTFV IS TFV OF PRIMARY
  173. 4020  GOSUB 5730
  174. 4030  FOR Y=1 TO TX: IF FC(Y)=1 AND NNR=0 THEN NNR=FN NP(FA(Y))
  175. 4040  NEXT
  176. 4050  REM NOW CHECK IF OTHER LATERAL RECORDS IN SUB-FILE
  177. 4060  IF NNR=0 THEN 4230: REM NO LINKS TO SUB-FILE
  178. 4070  FOR Y=1 TO 5:NQ(Y)=0:NEXT Y: FOR Y=1 TO TX: NQ=0:IF FR(FA(Y))=1 AND FA(Y)<>0 AND FA(Y)<>PRIMARY AND FC(Y)=1 AND NQ(FA(Y))=0 THEN NQ=FNNP(FA(Y)):NQ(FA(Y))=NQ:R(Y)=NQ:IF NQ<>0 THEN GET #FA(Y)+1,NQ:IF FA(Y-1)=FA(Y) AND FB(Y-1)=-0.1 THEN R(Y-1)=NQ
  179. 4075  IF NQ=0 THEN R(Y)=0: IF FA(Y-1)=FA(Y) AND FB (Y-1)<0 THEN R(Y-1)=0:REM DON'T PRINT # OF NON-LINKED RECORD
  180. 4080  NEXT: REM READ IN ALL FILES AGAIN
  181. 4090  IF SELECT=1 THEN GOSUB 5900: IF TFV=0 THEN 4190
  182. 4100  IF NPRINT=1 THEN NPRINT=0: GOSUB 5730: GOTO 4190:REM PRIMARY WAS NOT PRINTED
  183. 4110  NF=0:FOR Y=1 TO TX: IF FC(Y)=1 THEN 4170
  184. 4120  IF FB(Y)=-0.1 AND FA(Y)=PRIMARY OR FB(Y)=-0.2 AND FA(Y)=PRIMARY THEN PRINT #7,STRING$(7,32);:GOTO 4180
  185. 4121  IF FB(Y)= -0.1 AND R(Y)=0 OR FB(Y)=-2 AND R(Y)=0 THEN PRINT #7,STRING$(7,32);:GOTO 4180
  186. 4122  IF FB(Y)= -0.1 THEN PRINT #7,USING "#####";R(Y);: PRINT #7,". ";:GOTO 4180
  187. 4123  IF FB(Y)= -0.2 THEN PRINT #7,USING "#####";R(Y);: PRINT #7,". ";:GOTO 4180
  188. 4130  IF FB(Y)=-0.3 THEN PRINT #7," ":LL=LL+1:GOTO 4180
  189. 4135  IF FB(Y)=-0.4 THEN PRINT #7,A$(Y);:GOTO 4180
  190. 4140  IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y))+1,32);: GOTO 4180
  191. 4145  IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 4180
  192. 4146  IF T(FA(Y),FB(Y))=4 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+2,32);" ";:GOTO 4180
  193. 4147  IF R(Y)=0 THEN PRINT #7,STRING$(LEN(X$(FA(Y),FB(Y)))+1,32);:GOTO 4180
  194. 4150  PRINT #7,STRING$(LEN(X$(FA(Y),FB(Y)))+1,32);:GOTO 4180
  195. 4160  IF SELECT=1 THEN GOSUB 5420: IF TFV=0 THEN 4190
  196. 4170  IF T(FA(Y),FB(Y))=3 AND VAL(X$(FA(Y),FB(Y)))<>0 THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,2);"/";MID$(X$(FA(Y),FB(Y)),3,2);"/";MID$(X$(FA(Y),FB(Y)),5,2);" ";:GOTO 4180 ELSE IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 4180
  197. 4171  IF T(FA(Y),FB(Y))=4 THEN PRINT #7,USING RIGHT$(MF$,BL(FA(Y),FB(Y))+2);VAL(X$(FA(Y),FB(Y)));:PRINT #7," ";:GOTO 4180
  198. 4177  IF R(Y)=0 THEN PRINT #7,STRING$(LEN(X$(FA(Y),FB(Y)))+1,32);:GOTO 4180
  199. 4178  PRINT #7,X$(FA(Y),FB(Y));" ";:
  200. 4180  NEXT Y: PRINT #7," ":LL=LL+1:
  201. 4190  IF LL=>PL AND DIR<>2 AND TYP=2 THEN LPRINT NPG$:GOSUB 4900
  202. 4200  NNR=0: FOR Y=1 TO TX:IF FC(Y)=1 AND NNR=0 THEN NNR=FN NP(FA(Y))
  203. 4210  NEXT
  204. 4220  IF NNR=0 THEN 4230 ELSE GOTO 4070 REM NO MORE FURTHER POINTERS
  205. 4230  IF DIR<>2 THEN 4260 ELSE IF CSRLIN<20 THEN 4260
  206. 4240  LOCATE 23,1:PRINT "Hit any key to continue "
  207. 4250  A$=INKEY$: IF A$="" THEN 4250 ELSE CLS: GOSUB 4900
  208. 4260  IF DIR<>2 AND LL=>PL AND TYP=2 THEN LPRINT NPG$:GOSUB 4900
  209. 4275  IF X=>NR(PRIMARY) THEN  4300
  210. 4280  A$=INKEY$: IF A$=CHR$(27) THEN RUN
  211. 4290  NEXT X: REM READ NEXT RECORD
  212. 4300  IF DIR=2 THEN LOCATE 23,1:PRINT "Hit any key to continue ":A$=INKEY$: IF A$="" THEN 4300
  213. 4310  GOSUB 5130
  214. 4320  CLOSE: RUN "MENU
  215. 4330  GOTO 4330
  216. 4340  REM DISPLAY
  217. 4350  FLAG=0:E1=1:E2=0:GOSUB 1200:IF F=F1 THEN E1=F2
  218. 4360  COLOR 15:LOCATE 2,10:PRINT F:LOCATE 2,15:PRINT LEFT$(F$(F)+"             ",10):LOCATE 2,45:PRINT X;"/";NR(F)-1;"    ":IF XM<NR(0) THEN LOCATE 2,74:PRINT XM;" " ELSE LOCATE 2,74: PRINT "*  "
  219. 4370  IF E2<>0 THEN E1=E2+1:GOSUB 1220
  220. 4380  IF E1+9>TE(F) THEN E2=TE(F) ELSE E2=E1+9
  221. 4390  COLOR 7,0:LOCATE 4,5:PRINT "RECORD==> ";:LOCATE 4,16:PRINT X
  222. 4400  IF LEFT$(P$(F),2)=D$ THEN COLOR 31:LOCATE 5,5:PRINT "DELETED RECORD":COLOR 7,0:LOCATE 6,5:PRINT "LINK":LOCATE 6,16:PRINT " * ";CVI(MID$(P$(F),3)):GOTO 4500
  223. 4410  IF F<>0 THEN COLOR 7,0:LOCATE 5,5:PRINT "MASTER";:LOCATE 5,16:PRINT FNMFP(F):LOCATE 5,30:PRINT LEFT$(X$(0,1)+X$(0,2)+STRING$(50,32),49): LOCATE 6,5: PRINT "LINK";:LOCATE 6,16:PRINT FNNP(F)
  224. 4420  IF F<>0 THEN 4440 ELSE P=1:COLOR 7,0:LOCATE 5,5:COLOR 9,0:PRINT "POINTERS:":LOCATE 5,16:PRINT "1          2          3          4          5":COLOR 7,0: LOCATE 6,6:
  225. 4430   WHILE P<=TF:PRINT MID$("         "+STR$(FNPN(P))+"    ",1,11);:P=P+1:WEND
  226. 4440  FOR Y2=E1 TO E2:
  227. 4450  COLOR 7,0:LOCATE 8+Y2-E1,1:PRINT LEFT$(STR$(Y2)+". "+T$(F,Y2)+"               ",15);" ";:COLOR 0,7
  228. 4460  IF T(F,Y2)=1 OR T(F,Y2)=2 THEN PRINT X$(F,Y2):GOTO 4490
  229. 4470  IF T(F,Y2)=3 AND LEN(X$(F,Y2))>2 THEN PRINT MID$(X$(F,Y2),1,2);"/";MID$(X$(F,Y2),3,2);"/";MID$(X$(F,Y2),5,2):GOTO 4490 ELSE IF T(F,Y2)=3 THEN PRINT X$(F,Y2):GOTO 4490
  230. 4480  IF T(F,Y2)=4 THEN PRINT USING RIGHT$(MF$,BL(F,Y2)+2);VAL(X$(F,Y2))
  231. 4490  NEXT Y2:COLOR 7,0:
  232. 4500  RETURN
  233. 4510  REM EXIT
  234. 4520  RESET:RUN "MENU
  235. 4530  COLOR 9:PRINT "F10":COLOR 7,0:PRINT " Return to Menu"
  236. 4540  COLOR 15:LOCATE 5,1:PRINT "FILE: ";F$(F);"     ENTRIES: ";TE(F);"   LENGTH: ";LL(F)"   DRIVE: ";DR$(F)
  237. 4550  LOCATE 7,1: COLOR 9:PRINT "#     TITLE          TYPE     BEGINNING         LENGTH":COLOR 15
  238. 4560  E1=1:GOTO 4570
  239. 4570  IF E1+9>TE(F) THEN E2=TE(F) ELSE E2=E1+9
  240. 4580  FOR Y=E1 TO E2
  241. 4590  LOCATE 7+(Y MOD 10)+(-10*(Y MOD 10 = 0)),1:PRINT Y".  ";LEFT$(T$(F,Y)+"                         ",24);
  242. 4600  LOCATE ,22:IF T(F,Y)=1 THEN PRINT "ALPHA "; ELSE IF T(F,Y)=2 THEN PRINT "NUMBER"; ELSE IF T(F,Y)=3 THEN PRINT "DATE  "; ELSE IF T(F,Y)=4 THEN PRINT "$$$.$$"; ELSE PRINT "      ";
  243. 4610  PRINT  "     ";BB(F,Y);"              ";BL(F,Y):NEXT:COLOR 7,0
  244. 4620  GOSUB 1210: IF E2<TE(F) THEN LOCATE 22,3: INPUT "Press the 'ENTER' key to continue ";AN$: E1=E2+1:COLOR 15:GOTO 4570
  245. 4630  RETURN
  246. 4640  REM
  247. 4650  LOCATE 6,20:COLOR 15: PRINT "You have these files:": FOR F=0 TO TF: LOCATE ,20:PRINT F".   ";F$(F):NEXT:COLOR 7,0
  248. 4660  OLDROW=CSRLIN:OLDCOL=POS(0):LOCATE 2,3:PRINT TIME$:LOCATE OLDROW,OLDCOL:RETURN
  249. 4670  SHEL$=DR$+":*.FMT": FILES SHEL$
  250. 4730  COLOR 0,7:LOCATE 3,1: PRINT CHR$(200);STRING$(40,205):COLOR 7,0
  251. 4740  LOCATE 4,1:PRINT STRING$(40,32):FOR LI=4 TO 18:IF SCREEN (LI,1)=32 THEN LOCATE LI,1:PRINT STRING$(79,32) ELSE LOCATE LI,9:PRINT  "    ":LOCATE LI,27:PRINT"    ":LOCATE LI,45:PRINT"    ":LOCATE LI,63:PRINT"    ":
  252. 4750  NEXT:RETURN
  253. 4760  GOSUB 1200:
  254. 4770  COLOR 9:LOCATE 4,6: PRINT "FILE";:LOCATE 4,15:PRINT "FIELD": LOCATE 4,50:PRINT "One/All":COLOR 7,0
  255. 4780  FOR X=1 TO TX:R=5+(X MOD 13)
  256. 4790  LOCATE R,1:PRINT X".";:LOCATE R,6: PRINT F$(FA(X))
  257. 4800  IF FB(X)=-0.1 THEN LOCATE R,15:PRINT "* PHYSICAL RECORD #":GOTO 4860
  258. 4810  IF FB(X)=-0.2 THEN LOCATE R,15:PRINT "* SORTED RECORD #":GOTO 4860
  259. 4820  IF FB(X)=-0.3 THEN LOCATE R,15:PRINT "* NEW LINE":GOTO 4860
  260. 4825  IF FB(X)=-0.4 THEN LOCATE R,15:PRINT "* ";CHR$(34);A$(X);CHR$(34):GOTO 4860
  261. 4830  IF FB(X)<0   THEN LOCATE R,15:PRINT "* ADD ";ABS(FB(X));" SPACES":GOTO 4860
  262. 4840  LOCATE R,15:PRINT T$(FA(X),FB(X));:
  263. 4850  IF FA(X)=0 THEN 4860 ELSE IF FC(X)=0 THEN LOCATE R,50: PRINT "FIRST LINKED REC. ONLY"; ELSE IF FC(X)=1 THEN LOCATE R,50:PRINT "ALL LINKED RECORDS";
  264. 4860  IF ((X+1) MOD 13)=0 THEN GOSUB 1210:LOCATE 22,3: INPUT "PRESS 'ENTER' KEY TO CONTINUE ",A$: GOSUB 1230
  265. 4870  NEXT
  266. 4880  IF FLAG=1 THEN FLAG=0:GOSUB 1210: LOCATE 22,3: INPUT "OKAY TO PROCEED (Y/N) ";A$: A$=LEFT$(A$,1): IF A$="N" OR A$="n" THEN RETURN 3190 ELSE RETURN
  267. 4890  RETURN
  268. 4900  REM HEADER
  269. 4910  IF TYP<>2 OR DIR<>1 THEN RETURN
  270. 4915  IF P<>0 THEN LPRINT NPG$
  271. 4920  P=P+1:IF WI>80 AND DIR=1 THEN LPRINT CMP$:WIDTH #7,132
  272. 4930  PRINT #7, "REPORT: ";TITLE$;"  DATE: ";DATE$;" TIME: ";TIME$;"   PAGE ==> ";P
  273. 4940  PRINT #7, " ":PRINT #7,H$:PRINT #7, STRING$(LEN(H$),"=")
  274. 4950  LL=4:RETURN
  275. 4960  REM FORMAT OF HEADER
  276. 4970  IF TYP<>2 THEN RETURN:  REM HEADER ONLY FOR REPORT NOT LABELS OR CLONE
  277. 4980  H$=""
  278. 4990  FOR Y=1 TO TX
  279. 5000  IF FB(Y)=-0.1 THEN H$=H$+"REC.   ":GOTO 5050
  280. 5010  IF FB(Y)=-0.2 THEN H$=H$+"NUM.   ":GOTO 5050
  281. 5015  IF FB(Y)=-0.4 THEN H$=H$+STRING$(LEN(A$(Y)),32): GOTO 5050
  282. 5020  IF FB(Y)<0 THEN H$=H$+STRING$(ABS(FB(Y)),32)::GOTO 5050
  283. 5030  H$=H$+LEFT$(T$(FA(Y),FB(Y))+STRING$(80,32),BL(FA(Y),FB(Y)))+" "
  284. 5040  IF T(FA(Y),FB(Y))<>1 THEN H$=H$+"  ": REM ADD 2 SPACES IF DATE/NUMBER/$$$
  285. 5050  NEXT
  286. 5060  RETURN
  287. 5070  REM PRINT SUBTOTALS
  288. 5071  FTS=FTS+1: IF FTS=1 THEN OE$=X$(FA(YS),FB(YS)):RETURN
  289. 5072  IF OE$=X$(FA(YS),FB(YS)) THEN RETURN ELSE OE$=X$(FA(YS),FB(YS))
  290. 5080  PRINT #7,"Subtotals: ";
  291. 5090  FOR Y=1 TO TX:
  292. 5100  IF TT(0,Y)=0 THEN 5120
  293. 5110  PRINT #7,"(";Y;")";:PRINT #7,USING "#####.##";TT(1,Y);:PRINT #7,"   ";: TT(1,Y)=0
  294. 5120  NEXT Y: PRINT #7," ": PRINT #7," ":LL=LL+1:RETURN
  295. 5130  PRINT #7,"Totals: ";
  296. 5140  FOR Y=1 TO TX:
  297. 5150  IF TT(0,Y)=0 THEN 5170
  298. 5160  PRINT #7,"(";Y;")";:PRINT #7,USING "#####.##";TT(0,Y);:PRINT #7,"   ";: TT(0,Y)=0
  299. 5170  NEXT Y: PRINT #7," ":PRINT #7," ": RETURN
  300. 5180  REM LISTING ALL OR SOME
  301. 5190  GOSUB 1200: GOSUB 1210:GOSUB 4760
  302. 5200  FOR CX=1 TO 10
  303. 5210  LOCATE 22,3: PRINT "Which field ( 1 -";TX;:INPUT ") for selection ===> ";C$
  304. 5220  C=VAL(C$): IF C=0 THEN RETURN
  305. 5230  SELECT=1: REM flag
  306. 5240  IF C>TX THEN GOSUB 1340:GOTO 5210
  307. 5250  C(0,CX)=C
  308. 5260  IF T(FA(C),FB(C))<>3 THEN 5300: REM not a date
  309. 5270  GOSUB 1210: LOCATE 21,3: INPUT "Begin comparison on (1) Month; (2) Day or (3) Year ===> ";A$
  310. 5280  A=VAL(A$): IF A<1 OR A>3 THEN GOSUB 1330: GOTO 5270
  311. 5290  C(0,CX)=C(0,CX)+A/10: REM element.1 is month; element.2 is day; element.3 is year
  312. 5300  GOSUB 1210:LOCATE 21,3: PRINT "Comparisons: (1) > greater than; (2) < less than; (3) = equal to":LOCATE 22,3: PRINT "(4) <> not equal to"
  313. 5310  LOCATE 23,3: INPUT "Which type of comparison (1 - 4) ====> ";C$
  314. 5320  C=VAL(C$): IF C>4 THEN GOSUB 1340:GOTO 5300 ELSE IF C<1 THEN GOSUB 1330:GOTO 5300
  315. 5330  C(1,CX)=C
  316. 5340  GOSUB 1210: LOCATE 22,3: INPUT "Value for comparison  ====> ";C$
  317. 5350  C$(CX)=C$
  318. 5360  GOSUB 1210: LOCATE 22,3: INPUT "(1) AND (2) OR (3) END =====> ";C$
  319. 5370  C=VAL(C$): IF C<1 THEN GOSUB 1330:GOTO 5360
  320. 5380  IF C>3 THEN GOSUB 1340:GOTO 5360
  321. 5390  C(2,CX)=C
  322. 5400  IF C(2,CX)=3 THEN TC=CX:RETURN
  323. 5410  NEXT
  324. 5420  REM SELECTION COMPARISON
  325. 5430  REM C(0,Y) ELEMENT; C(1,Y) 1)> 2)< 3)= 4)<>;   C(2,Y) 1)AND 2)OR 3)END; C(3,Y) -1 IS TRUE AND 0 IS FALSE
  326. 5440  REM GO THROUGH AND CHECK TRUTH/FALSITY OF ALL COMPARISIONS
  327. 5450  TFV=0:FOR C=1 TO TC: C(3,C)=0
  328. 5460  IF  INT(C(0,C)/C(0,C)) <> C(0,C)/INT(C(0,C))THEN C3=10*(C(0,C)-INT(C(0,C))):C3=INT(C3+9.9999E-05):C2=C(0,C)-(C3/10): C3=C3+(ABS(C3=2))+ (2*ABS(C3=3)):VALUE= VAL(MID$(X$(FA(C2),FB(C2)),C3)): V$=MID$(X$(FA(C2),FB(C2)),C3,LEN(C$(C))):GOTO 5480
  329. 5470  VALUE= VAL(X$(FA(C(0,C)),FB(C(0,C)))): V$=LEFT$(X$(FA(C(0,C)),FB(C(0,C))),LEN(C$(C)))
  330. 5480  IF C(1,C) <=2  THEN 5530:REM MATH COMPARISON
  331. 5490  IF C(1,C)=3 AND VALUE<>0 AND VALUE=VAL(C$(C)) THEN C(3,C)=-1:GOTO 5560
  332. 5500  IF C(1,C)=3 AND V$=C$(C) THEN C(3,C)=-1: GOTO 5560
  333. 5510  IF C(1,C)=4 AND VALUE<>0 AND VALUE<>VAL(C$(C)) THEN C(3,C)=-1:GOTO 5560
  334. 5520  IF C(1,C)=4 AND VALUE=0 AND V$<>C$(C) THEN C(3,C)=-1: GOTO 5560
  335. 5530  REM ARITHMATIC COMPARISON
  336. 5540  IF C(1,C)=1 AND VALUE>VAL(C$(C)) THEN C(3,C)=-1
  337. 5550  IF C(1,C)=2 AND VALUE <VAL(C$(C)) THEN C(3,C)=-1
  338. 5560  NEXT
  339. 5570  REM NOW CHECK FOR "ORS"
  340. 5580  FOR C=1 TO TC: IF C(2,C)<>2 THEN ORFLAG=0:GOTO 5640
  341. 5590  IF C(3,C) OR C(3,C+1) THEN C(3,C)=-1: C(3,C+1)=-1:ORFLAG=-1
  342. 5600  IF C=1 OR ORFLAG=0 THEN 5640
  343. 5610  REM NOW CHECK BACKWARDS
  344. 5620  FOR C1=C TO 1 STEP -1: IF C(2,C1)=2 AND ORFLAG=-1 THEN C(3,C1)=-1:ELSE C1=0: GOTO 5640
  345. 5630  NEXT C1
  346. 5640  NEXT C
  347. 5650  REM NOW ALL ORS ARE -1 IF NEIGHBORING ORS ARE TRUE
  348. 5660  REM NOW CHECK FOR "ANDS"
  349. 5670  FOR C=1 TO TC: IF C(2,C)=1 THEN ANDFLAG=1:
  350. 5680  NEXT
  351. 5690  IF ORFLAG=0 AND ANDFLAG=0 THEN ANDFLAG=1
  352. 5700  SUM=0: FOR C=1 TO TC: SUM=SUM+C(3,C): NEXT
  353. 5710  TFV=0:IF ANDFLAG=0 AND SUM <>0 THEN TFV=-1:RETURN ELSE IF ANDFLAG=0 THEN RETURN:REM NO "ORS" ARE TRUE
  354. 5720  TFV=0: IF ANDFLAG=1 AND SUM=TC*-1 THEN TFV=-1:RETURN ELSE IF ANDFLAG=1 THEN RETURN: REM IF AND ALL SHOULD BE TRUE
  355. 5730  REM SUBROUTINE TO PRINT OUT FULL LINE
  356. 5740  FOR Y=1 TO TX:YM=XM
  357. 5750  IF FA(Y)<>PRIMARY AND FA(Y)<>0 THEN YM=FNPN(FA(Y)):IF YM=0 AND FB(Y)=-0.1 OR YM=0 AND FB(Y)=-2 THEN PRINT #7,STRING$(8,32);:GOTO 5840 ELSE IF YM=0 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+1,32);:GOTO 5840
  358. 5752  IF FA(Y)<>PRIMARY AND FA(Y)=0 THEN YM=FNMFP(PRIMARY):IF YM=0 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+1,32);:GOTO 5840
  359. 5760  IF X=1 THEN Y$=X$(FA(YS),FB(YS))
  360. 5770  TT(0,Y)=TT(0,Y)+VAL(X$(FA(Y),FB(Y))): TT(1,Y)=TT(1,Y)+VAL(X$(FA(Y),FB(Y)))
  361. 5780  IF Y=YS AND X$(FA(Y),FB(Y))<>Y$  THEN SUBTOTAL=1: Y$=X$(FA(Y),FB(Y))
  362. 5790  IF FB(Y)= -0.1 THEN PRINT #7,USING "#####";YM;: PRINT #7,". ";:GOTO 5840
  363. 5800  IF FB(Y)= -0.2 THEN PRINT #7,USING "#####";X;: PRINT #7,". ";:GOTO 5840
  364. 5810  IF FB(Y)= -0.3 THEN PRINT #7," ":LL=LL+1:GOTO 5840
  365. 5815  IF FB(Y)= -0.4 THEN PRINT #7,A$(Y);:GOTO 5840
  366. 5820  IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y))+1,32);:GOTO 5840
  367. 5825  IF T(FA(Y),FB(Y))=3 AND VAL(X$(FA(Y),FB(Y)))<>0 THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,2);"/";MID$(X$(FA(Y),FB(Y)),3,2);"/";MID$(X$(FA(Y),FB(Y)),5,2);" ";:GOTO 5840 ELSE IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 5840
  368. 5826  IF T(FA(Y),FB(Y))=4 THEN PRINT #7,USING RIGHT$(MF$,BL(FA(Y),FB(Y))+2);VAL(X$(FA(Y),FB(Y)));:PRINT #7," ";:GOTO 5840
  369. 5830  IF TYP<> 1 THEN PRINT #7, X$(FA(Y),FB(Y));" ";:GOTO 5840
  370. 5832  FOR GG=1 TO LEN (X$(FA(Y),FB(Y)))::SP =INSTR(GG,X$(FA(Y),FB(Y)),CHR$(32)):IF SP=0 THEN PRINT #7, X$(FA(Y),FB(Y));" ";:GG=99:GOTO 5840
  371. 5833  IF SP=1 THEN GG=99:GOTO 5840
  372. 5834  IF MID$(X$(FA(Y),FB(Y)),SP)=MID$("                              ",1,LEN(X$(FA(Y),FB(Y)))-SP+1) THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,SP-1);" ";:GG=99:GOTO 5840 ELSE GG=SP
  373. 5836  NEXT GG:
  374. 5840  NEXT Y: PRINT #7," ":LL=LL+1
  375. 5850  RETURN
  376. 5900  REM BEFORE GOING TO SELECTION CHECK TO SEE IF SUB-FILE IS IN SELECTION CRITERION
  377. 5905  REM C(0,C) IS ELEMENT, CHECK IF ELEMENT  FC(Y) IS 1 WHICH MEANS IT IS A LINKED RECORD TO BE PRINTED
  378. 5910  TFV=0:FOR C=1 TO TC: IF FC(C(0,C))<>1 OR X$(FA(C(0,C)),FB(C(0,C)))=STRING$(LEN(X$(FA(C(0,C)),FB(C(0,C)))),32) THEN NEXT C: TFV=PTFV:RETURN
  379. 5920  C=TC+1
  380. 5990  GOSUB 5420: RETURN: REM GOTO SELECTION
  381. 30000  OLDROW=CSRLIN:OLDCOL=POS(0):OPEN "ERROR" AS #7 LEN=176:FIELD #7,35 AS ER$(1),70 AS ER$(2),70 AS ER$(3):GET#7,ERR
  382. 30010  LOCATE 20,3:PRINT LEFT$(ER$(1),INSTR(ER$(1),"  ")+(-40*INSTR(ER$(1),"  ")=0));" IN LINE ";ERL;" (Press any key)":LOCATE 21,3:PRINT ER$(2):LOCATE 22,3:PRINT ER$(3):PLAY"MB":J9=2:FOR I9=1 TO 9:PLAY"L64T255O=J9;CC#DD#EFF#GG#AA#B":NEXT
  383. 30020  AE$=INKEY$:IF AE$=""THEN 30020 ELSE FOR EL=20 TO 22:LOCATE EL,3:PRINT STRING$(76,32);:NEXT:LOCATE OLDROW,OLDCOL:CLOSE#3:RESUME
  384. 40000  REM **********************************************************
  385. 40010  REM **********************************************************
  386. 40020  REM ** COPYRIGHT (C) 1984, 1988  GERALD E. GONDERINGER      **
  387. 40030  REM ** The Omaha DataBase Program                           **
  388. 40040  REM ** $50.00 REGISTRATION FEE FOR USE OF PROGRAM           **
  389. 40050  REM **********************************************************
  390. 40060  REM **********************************************************
  391.